#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <deque>

using namespace std;

#include "queue.h"
#include "stack.h"

void test1()
{
	ly::stack<int> st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);

	while (!st.empty())
	{
		int top = st.top();
		st.pop();

		cout << top << endl;
	}
}

void test2()
{
	ly::queue<int> st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);

	while (!st.empty())
	{
		int top = st.front();
		st.pop();

		cout << top << endl;
	}
}

int main()
{
	test2();

	return 0;
}

//namespace ly
//{
//	class string
//	{
//	public:
//		string(const char* str = "")
//			:_size(strlen(str))
//			,_capacity(_size)
//		{
//			_str = new char[_capacity + 1];
//			strcpy(_str, str);
//		}
//
//		string(const string& s)
//		{
//			_str = new char[s._capacity + 1];
//			_size = s._size;
//			_capacity = s._capacity;
//
//			strcpy(_str, s._str);
//		}
//
//		string& operator=(const string& s)
//		{
//			if (this != &s)
//			{
//				char* tmp = new char[s._capacity + 1];
//				delete[] _str;
//
//				strcpy(tmp, s._str);
//				_str = tmp;
//				_size = s._size;
//				_capacity = s._capacity;
//
//			}
//
//			return *this;
//		}
//
//		~string()
//		{
//			delete[] _str;
//			_str = nullptr;
//			_capacity = _size = 0;
//		}
//	private:
//		char* _str;
//		size_t _size;
//		size_t _capacity;
//	};
//}

//template<class container>
//class solution
//{
//public:
//	void test(container cont)
//	{
//		cont.push_back(1);
//		cont.push_back(2);
//		cont.push_back(3);
//		cont.push_back(4);
//		cont.push_back(5);
//
//		container::iterator iter, templt;
//		for (iter = cont.begin(); iter != cont.end();)
//		{
//			templt = iter;
//			++iter;
//
//			cont.erase(templt);
//		}
//	}
//};
//
//int main()
//{
//	solution<deque<int>> test(deque<int> dq);
//
//	return 0;
//}

//void func(ly::string s)
//{
//	cout << "void func(string s)" << endl;
//}

//int main()
//{
//	ly::string str("hello world");
//	func(str);
//
//	return 0;
//}
//
//int main()
//{
//	deque<int> dq({ 1,2,3,4,5 });
//
//	std::deque<int>::iterator it = dq.begin();
//	while (it != dq.end())
//	{
//		std::deque<int>::iterator tmp = it;
//		++it;
//		dq.erase(tmp);
//	}
//	return 0;
//}